Computing systems are accessed by users to communicate with each other, share their interests, upload images and videos, create new relationships, etc. For example, social networking services and communication systems can execute on computing systems to enable users to communicate with each other through devices. The computing systems can operate in a distributed computing environment with data being distributed among and processed using resources. Resources can be located or grouped in various ways, such as for data centers, suites, or server racks.
Designated resource slots can be determined according to various reasons, parameters, or constraints, such as regarding required power, heat or cooling capacity, network capacity, associations or connections to other resources, etc. However, vastly numerous possibilities exist for arranging the resources, such as a set of server racks, within a large location, such as a server room or data center.
Conventionally, a set of engineers may take multiple days, if not weeks, to allocate the resources. Further, the number of possible allocations, groupings and combinations are too vast for human computation to accurately assess optimal allocations. As such, there is a need to automatically allocate the resources for a given set of locations and assess the allocations according to the reasons, parameters, or constraints associated with the resource allocation to promote optimum operation of the computing system.
The figures depict various embodiments of this disclosure for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of embodiments described herein.